package io.renren.service;

import io.renren.entity.*;
import io.renren.po.User;
import io.renren.vo.RespModel;

import java.util.HashMap;
import java.util.List;

/**
 * 应用客户端用户注册与维护
 * 
 * @author levitian
 * 
 */
public interface UserService {

	/**
	 * 注册一个用户 使用短信验证码
	 * 
	 * @param user
	 * @return
	 */
	RespModel<String> add(UserRegModel user);

	/**
	 * 注册一个用户 不使用短信验证码
	 * 
	 * @param user
	 * @return
	 */
    RespModel<String> addNewUser(UserRegModel user);

	/**
	 * 检查一个用户是否已注册
	 * 
	 * @return
	 */
    RespModel<User> userExist(UserExistModel user);

	/**
	 * 重置密码
	 * 
	 * @param user
	 * @return
	 */
    RespModel<String> updatePasswordByReset(UserRegModel user);

	/**
	 * 修改密码
	 * 
	 * @return
	 */
    RespModel<String> updatePasswordByChange(ChangePasswordModel cpwmodel);

	/**
	 * 获得用户信息
	 * @return
	 */
    RespModel<UserInfo> getInfo(String username);

	/**
	 * 增加或更新用户信息
	 * 
	 * @return
	 */
    RespModel<String> addOrUpdateInfo(String applicationId, UserInfoModel userInfoModel, String jwttoken);

	/**
	 * 图片上传
	 * 
	 * @param payload
	 * @return
	 */
    RespModel<HashMap<String, Object>> addIcon(String username, String icon_url);
	
	
	/**
	 * 绑定微信
	 * 
	 * @return
	 */
    RespModel<String> updateBoundWechat(String data);
	
	/**
	 * 微信解绑
	 * 
	 * @return
	 */
    RespModel<String> updateUnBoundWechat(String data);
	
	/**
	 * 获取绑定微信信息
	 * 
	 * @return
	 */
    RespModel<User> getBoundInfo(String data);

    User selectById(Long userI);

    /**
     * 用户登录--生成token
     * @param tokenValidateModel
     * @return
     */
    public RespModel<TokenModel> login(TokenGeneratorInputModel tokenValidateModel);

	/**
	 * 根据用户名获取消息
	 * @param userid
	 * @return
	 */
	List<MessageEntity> getMyMessage(String userid);

	/**
	 * 用户读取消息操作
	 * @param messageId
	 * @return
	 */
	int read(String messageId);
}
